package com.neuedu.mapper;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.neuedu.bean.Register;

public interface RegisterMapper extends BaseMapper<Register> {
	//根据某一个状态和姓名、病历号取得当天患者信息（分页、查询）
//	@Select("select * from register where visit_state=#{visit_state} and real_name=#{real_name} and case_number=#{case_number} limit(0,20)")
	List<Register> getPatientByState(
			@Param("employee_id")Integer employee_id,
			@Param("case_number")String case_number,
			@Param("real_name")String real_name,
			@Param("nowPageNumber")Integer nowPageNumber,
			@Param("pageSize")Integer pageSize,
			@Param("visit_state")String visit_state);
	//根据某一个状态和姓名、病历号取得当天患者数量（分页、查询）
//	@Select("select count(*) from register where visit_state=#{visit_state} and real_name=#{real_name} and case_number=#{case_number} limit(0,20)")
	Integer getPatientByStateCount(
			@Param("employee_id")Integer employee_id,
			@Param("case_number")String case_number,
			@Param("real_name")String real_name,
			@Param("visit_state")String visit_state);
	
	//取得患者看诊记录（状态为1、2、3）（分页、查询）
//	@Select("")
	List<Map<String, Object>> getAllPatient(
			@Param("case_number")String case_number, 
			@Param("real_name")String real_name, 
			@Param("nowPageNumber")Integer nowPageNumber,
			@Param("pageSize")Integer pageSize);
	//取得患者看诊记录数量（状态为1、2、3）（分页、查询）
	Integer getAllPatientCount(
			@Param("case_number")String case_number, 
			@Param("real_name")String real_name);
	
	//添加注册信息
	int addRegister(Register register);

	//已挂号数量统计    按照日期  午别 医生 统计   visit_state状态为 1、2、3
//	@Select("select count(*) from register where visit_state<4 and date(visit_date)=#{visitDate} and employee_id=#{employeeId} and noon=#{noon}")
	String getAlreadyRegisterCount(@Param("visitDate")String visitDate, 
			@Param("noon")String noon, 
			@Param("employeeId")String employeeId);
	
	//根据属性进行查询
	List<Map<String, Object>> getRegisterByProperty(Map<String, Object> map);
	
	//根据id更改患者挂号状态
	int updateStateById(@Param("id")Integer id, @Param("visit_state")Integer visit_state);
	//得到最大病例号
	@Select("select max(case_number) from register")
	String getMaxCaseNumber();
	
	//按就诊状态分页查询患者信息
	//退号、就诊等业务功能公用此方法
//	List<Register> getPagePatientByState(@Param("case_number")String case_number, @Param("real_name")String real_name,
//			@Param("nowPageNumber")Integer nowPageNumber, @Param("pageSize")Integer pageSize,@Param("visit_state")Integer visit_state);
	//按就诊状态分页查询患者人数
	int getPagePatientByStateCount(@Param("case_number")String case_number, @Param("real_name")String real_name,@Param("visit_state")Integer visit_state);
	
//	根据医生ID查询排队等待就诊的患者信息
	int getWaitPatientCount(Integer employee_id);
	
}
